Establishing location sharing configurations

ABSTRACT

Embodiments for establishing configurations for a location sharing session are described. A location sharing session can include a sharing device gathering location data and providing it to a recipient device, e.g. via a server system. Configurations for a sharing session can include, for example: a duration that the sharing device provides the location data or that the sever system permits access to location data by the recipient device; preferences for how to manually or automatically set the duration for the sharing session; options to automatically end the sharing session; etc. A sharing session duration can be automatically set based on, e.g. an estimated time of arrival, a specified mode of transport, etc., and can include a specified amount of buffer time. The automatic share duration can last until a particular event occurs, e.g. the sharing device arriving at a particular location.

CROSS-REFERENCES TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.16/812,253, filed on Mar. 6, 2020, and entitled “ESTABLISHING LOCATIONSHARING CONFIGURATIONS, which is a continuation of U.S. patentapplication Ser. No. 16/209,911, filed on Dec. 4, 2018, and entitled“ESTABLISHING LOCATION SHARING CONFIGURATIONS (now U.S. Pat. No.10,623,907)” which claims the benefit of U.S. Provisional PatentApplication Ser. No. 62/596,498, filed on Dec. 8, 2017, and entitled“ESTABLISHING LOCATION SHARING CONFIGURATIONS;” all of which are herebyincorporated by reference in their entireties.

BACKGROUND

As internet connected mobile devices become ubiquitous, people aresharing more and more about their lives. For example, many people trackhow many steps they take, where they've been, and what they're buying.For some services such as photos and comments on social media, thetechnology allowing people to select what to share and with whom hasbecome fast and simple. Many photo applications, step counters, andsurvey apps have integrated sharing capabilities that allow users toselect how the collected data is distributed.

The ability to quickly and easily share a device's location, however,presents unique challenges that have been more difficult to overcome.Some reasons for this is a result of the non-static nature of a user'slocation, how quickly that data becomes stale, the sensitivity andsecurity of location data, the resource intensive nature of gatheringand distributing location data, and the difficulty of addressing allthese aspects into a user-friendly environment. Accordingly, previoussystems dealing with location data sharing have not adequately overcomethese challenges.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram illustrating an overview of devices on whichsome implementations can operate.

FIG. 2 is a block diagram illustrating an overview of an environment inwhich some implementations can operate.

FIG. 3 is a block diagram illustrating components which, in someimplementations, can be used in a system employing the disclosedtechnology.

FIG. 4 is a flow diagram illustrating a process used in someimplementations for establishing a configuration for a location sharingsession.

FIGS. 5A-C are conceptual diagrams illustrating an example share sessionoptions interface.

FIG. 6 is a conceptual diagram illustrating an example UX interface foran ongoing location sharing session.

The techniques introduced here may be better understood by referring tothe following Detailed Description in conjunction with the accompanyingdrawings, in which like reference numerals indicate identical orfunctionally similar elements.

DETAILED DESCRIPTION

Embodiments for establishing configurations for a location sharingsession are described. A location sharing session can include a mobiledevice gathering location data (a “sharing device”) and providing it toanother device (a “recipient device”), e.g. via a host system (a “serversystem”). Configurations for a sharing session, for example, caninclude: a duration that the sharing device provides the location dataor that the sever system permits access to location data by therecipient device; preferences for how to manually or automatically setthe duration for the sharing session; a granularity that the locationdata is taken at; options to automatically end the sharing session;prompts for user options to control the sharing session; or defaults forvarious characteristics of the sharing session.

In various implementations, a sharing session duration can beautomatically set or set to a static duration. An automatically setduration can be set based on relevant data for a user indicated journey(e.g. indicated by setting a start or destination). In variousimplementations, the relevant journey data can include routinginformation, an estimated time of arrival (ETA), a specified mode oftransport, speed (e.g. speed limits, typical speed by multiple users,expected speed of the current user, etc.), traffic conditions, terrain,weather conditions, etc.

In some implementations, an automatic share duration can be specified tolast until a particular event occurs, such as when the sharing device isdetermined to have arrived at a particular location (e.g. a favoritelocation or a destination of a current journey), be within a thresholddistance of a particular other device (such as the receiving device), orwhen the sharing device speed changes by a threshold amount (e.g. whenthe user of the sharing device moves from a vehicle to walking). In someimplementations, this can be a setting specified upon initiating thesharing session, e.g. “Stop Share when I arrive.” In someimplementations, once selected, this option can continue to exist in theglobal settings, but can be later configured differently. In someimplementations, the share duration can last until a set amount of timeafter the sharing device arrives at a particular location. For example,this can help facilitate a meet-up with the user of the receivingdevice.

In some circumstances, a static share duration can be set. For example,a static share duration can be set when a user selects a “favorite”share recipient for whom they previously selected a static shareduration or for whom they have not previously selected whether to use astatic or automatic share duration. As another example, a user canspecify a preference to always use a static share duration. As yet afurther example, a user can specify particular destinations or startlocations for which a static share duration will be used. The staticduration can be a default amount, a user specified amount, or acombination of these depending on various of the circumstances where astatic duration is set.

In some implementations, a share duration (whether automatic or static)can be augmented by a buffer time. The buffer time can provide animproved user experience by preventing a share duration from expiringprior to a desired event, such as arrival at a destination. For example,a share duration without a buffer could expire due to unforeseencircumstances such as changes to traffic patterns, time for walking to acar, stopping to pick up something on the way, etc. In someimplementations, an amount of buffer time that is added to a shareduration can be based on a mapping of ETA ranges to buffer amounts. Insome implementations, this mapping can be a “multiple of 10 buffer,”which maps ETA to buffer amounts as follows in table 1:

TABLE 1 ETA Multiple of 10 Buffer 0-20 min ETA + 10 min 20-60 min ETA +20 min 1-2 hr ETA + 30 min 2-4 hr ETA + 40 min 4-8 hrs ETA + 60 min 8-12hrs ETA + 90 min (up to max of 12 hours)

In some circumstances, the sharing device can provide various “smartprompts” to the user of the sharing device. Smart prompts can betriggered in various situations to notify a user of a status of asharing session or to prompt the user about an opportunity to set oroverride a previously set sharing session configuration. For example, asmart prompt can warn a user if a share duration is set that is lessthan an ETA for a current or upcoming journey. As another example, asmart prompt can warn a user if they set a sharing duration longer thana threshold, such as 4 hours, e.g. the warning can advise the user shemay need to have her device plugged into a charger. Another instancewhere the sharing device can provide a smart prompt is where a sharingsession is about to expire but the system determines that a destinationfor a current journey has not yet been reached. For example, the smartprompt can provide an option to extend the sharing session for aparticular amount of time or until the destination is reached.

The sending device and receiving device can provide various userexperience environments (UX) in relation to configuring, initiating, andparticipating in a sharing session. For example, a UX at the sendingdevice can include a settings interface where a user can specifydefaults for the location sharing system such as whether to share thesharing device's location, whether to share the sharing device's speed,what type of units to use, whether to automatically stop sharing when adestination is reached, what locations are favorites (e.g. work, home,school, etc.), favorite recipients, what default static share durationto use, what buffer mappings to use, etc. Another UX at the sendingdevice can include a share session options interface that allows theuser of the sharing device to provide options and override defaults fora particular sharing session. For example, the share session optionsinterface can have one or more fields for a user to configure thesharing session such as setting: recipients for the sharing session, amessage for the recipient(s) to receive in an invite to the sharingsession, a destination for a journey the sharing session will be for, amode of transportation that will be taken in the journey, a duration forthe sharing session, or an option to save the recipients or all of thecurrent share session settings as a favorite. In some implementations, apreviously saved favorite share session can be quickly selected toauto-fill the sharing session fields with the saved share sessionoptions. In some implementations, when auto-duration selection isenabled and a destination is set, the duration field can be set with anindication of an ETA and an indication of an added buffer time. In someimplementations, when a user modifies settings affecting the ETA (e.g.changing mode of transportation) the ETA and buffer indicators can beautomatically updated. In some implementations, these auto-durationvalues can be manually overridden by the user.

In some implementations, a recipient can be associated with acommunication channel (e.g. email, text, IM) and a location sharingsession invite can be sent to the communication channel, which therecipient can open on any of multiple recipient devices. For example, auser can receive an email with a link to a location sharing session, onone of multiple possible recipient devices, the user can actuate thelink to view an interface such as is illustrated in FIG. 6, byretrieving it from memory, downloading it through a network interface,or a combination thereof for various portions of the interface. Invarious implementations, this interface can be provided through abrowser or another app.

While various personal data sharing technologies have been popular overthe last several years, location sharing has been a challenge which theprior art has failed to fully address. The technology described hereinovercomes several of the challenges in this field. By computing aparticular time at which to control the sending device and/or the serversystem to stop location sharing, which is accomplished through the useof specific rules, the technology herein improves network performance bylimiting service to when it is most likely wanted by users, savesvaluable computing power and battery life in mobile devices, andprovides a faster and easier user experience.

Various embodiments of the system will now be described. The followingdescription provides specific details for a thorough understanding andan enabling description of these embodiments. One skilled in the artwill understand, however, that the system may be practiced without manyof these details. Additionally, some well-known structures or functionsmay not be shown or described in detail, so as to avoid unnecessarilyobscuring the relevant description of the various embodiments. Theterminology used in the description presented below is intended to beinterpreted in its broadest reasonable manner, even though it is beingused in conjunction with a detailed description of certain specificembodiments of the described technology.

Suitable Computing System And Computing Environment

Several implementations are discussed below in more detail in referenceto the figures. Turning now to the figures, FIG. 1 is a block diagramillustrating an overview of devices on which some implementations of thedisclosed technology can operate. The devices can comprise hardwarecomponents of a device 100 that can operate in a location sharingsystem. Device 100 can include one or more input devices 120 thatprovide input to the CPU(s) (processor) 110, notifying it of actions.The actions can be mediated by a hardware controller that interprets thesignals received from the input device and communicates the informationto the CPU 110 using a communication protocol. Input devices 120include, for example, a mouse, a keyboard, a touchscreen, an infraredsensor, a touchpad, a wearable input device, a camera- or image-basedinput device, a microphone, or other user input devices.

CPU 110 can be a single processing unit or multiple processing units ina device or distributed across multiple devices. CPU 110 can be coupledto other hardware devices, for example, with the use of a bus, such as aPCI bus or SCSI bus. The CPU 110 can communicate with a hardwarecontroller for devices, such as for a display 130. Display 130 can beused to display text and graphics. In some implementations, display 130provides graphical and textual visual feedback to a user. In someimplementations, display 130 includes the input device as part of thedisplay, such as when the input device is a touchscreen or is equippedwith an eye direction monitoring system. In some implementations, thedisplay is separate from the input device. Examples of display devicesare: an LCD display screen, an LED display screen, a projected,holographic, or augmented reality display (such as a heads-up displaydevice or a head-mounted device), and so on. Other I/O devices 140 canalso be coupled to the processor, such as a network card, video card,audio card, USB, firewire or other external device, camera, printer,speakers, CD-ROM drive, DVD drive, disk drive, or Blu-Ray device.

In some implementations, the device 100 also includes a communicationdevice capable of communicating wirelessly or wire-based with a networknode. The communication device can communicate with another device or aserver through a network using, for example, TCP/IP protocols. Device100 can utilize the communication device to distribute operations acrossmultiple network devices.

The CPU 110 can have access to a memory 150 in a device or distributedacross multiple devices. A memory includes one or more of varioushardware devices for volatile and non-volatile storage, and can includeboth read-only and writable memory. For example, a memory can compriserandom access memory (RAM), CPU registers, read-only memory (ROM), andwritable non-volatile memory, such as flash memory, hard drives, floppydisks, CDs, DVDs, magnetic storage devices, tape drives, device buffers,and so forth. A memory is not a propagating signal divorced fromunderlying hardware; a memory is thus non-transitory. Memory 150 caninclude program memory 160 that stores programs and software, such as anoperating system 162, location sharing system 164, and other applicationprograms 166. Memory 150 can also include data memory 170, such aslocation information; UI/UX data, maps, routes, etc.; or configurationdata, settings, user options or preferences, user profile data, etc.,which can be provided to the program memory 160 or any element of thedevice 100, e.g. CPU 110 while executing a program.

Some implementations can be operational with numerous other generalpurpose or special purpose computing system environments orconfigurations. Examples of well-known computing systems, environments,and/or configurations that may be suitable for use with the technologyinclude, but are not limited to, personal computers, server computers,handheld or laptop devices, cellular telephones, wearable electronics,gaming consoles, tablet devices, multiprocessor systems,microprocessor-based systems, set-top boxes, programmable consumerelectronics, network PCs, minicomputers, mainframe computers,distributed computing environments that include any of the above systemsor devices, or the like.

FIG. 2 is a block diagram illustrating an overview of an environment 200in which some implementations of the disclosed technology can operate.Environment 200 can include one or more client computing devices 205A-E,examples of which can include device 100. Client computing devices 205can operate in a networked environment using logical connections 210through network 230 to one or more remote computers, such as a servercomputing device.

In some implementations, server 210 can be an edge server which receivesclient requests and coordinates fulfillment of those requests throughother servers, such as servers 220A-C. Server computing devices 210 and220 can comprise computing systems, such as device 100. Though eachserver computing device 210 and 220 is displayed logically as a singleserver, server computing devices can each be a distributed computingenvironment encompassing multiple computing devices located at the sameor at geographically disparate physical locations. In someimplementations, each server 220 corresponds to a group of servers.

Client computing devices 205 and server computing devices 210 and 220can each act as a server or client to other server/client devices.Server 210 can connect to a database 215. Servers 220A-C can eachconnect to a corresponding database 225A-C. As discussed above, eachserver 220 can correspond to a group of servers, and each of theseservers can share a database or can have their own database. Databases215 and 225 can warehouse (e.g. store) information such as locationdata, route information, maps, user profiles, preferences, contacts,etc., mappings between share configurations and share duration buffers,etc. Though databases 215 and 225 are displayed logically as singleunits, databases 215 and 225 can each be a distributed computingenvironment encompassing multiple computing devices, can be locatedwithin their corresponding server, or can be located at the same or atgeographically disparate physical locations.

Network 230 can be a local area network (LAN) or a wide area network(WAN), but can also be other wired or wireless networks. Network 230 maybe the Internet or some other public or private network. Clientcomputing devices 205 can be connected to network 230 through a networkinterface, such as by wired or wireless communication. While theconnections between server 210 and servers 220 are shown as separateconnections, these connections can be any kind of local, wide area,wired, or wireless network, including network 230 or a separate publicor private network.

Establishing Location Sharing Configurations

FIG. 3 is a block diagram illustrating components 300 which, in someimplementations, can be used in a system employing the disclosedtechnology. The components 300 include hardware 302, general software320, and specialized components 340. As discussed above, a systemimplementing the disclosed technology can use various hardware includingprocessing units 304 (e.g. CPUs, GPUs, APUs, etc.), working memory 306,storage memory 308 (local storage or as an interface to remote storage,such as storage 215 or 225), and input and output devices 310. Invarious implementations, storage memory 308 can be one or more of: localdevices, interfaces to remote storage devices, or combinations thereof.For example, storage memory 308 can be a set of one or more hard drives(e.g. a redundant array of independent disks (RAID)) accessible througha system bus or can be a cloud storage provider or other network storageaccessible via one or more communications networks (e.g. a networkaccessible storage (NAS) device, such as storage 215 or storage providedthrough another server 220). Components 300 can be implemented in aclient computing device such as client computing devices 205 or on aserver computing device, such as server computing device 210 or 220.

General software 320 can include various applications including anoperating system 322, local programs 324, and a basic input outputsystem (BIOS) 326. Specialized components 340 can be subcomponents of ageneral software application 320, such as local programs 324.Specialized components 340 can include static-timer 344, auto-timer 346,ETA generator 348, ETA mapper 350, smart prompter 352, and componentswhich can be used for transferring data and controlling the specializedcomponents, such as interface 342. In some implementations, components300 can be in a computing system that is distributed across multiplecomputing devices or can be an interface to a server-based applicationexecuting one or more of specialized components 340.

Static-timer 344 can provide a static duration for a location sharingsession. This can be used when the user sets a manual share duration,due to a global static share duration preference, or when using a set offavorite location share settings that do not specify whether to usestatic or automatic durations (see e.g. the Yes branch from block 406below). The static duration can be a default or manually set amount oftime. Additional details on setting a static duration are describedbelow in relation to block 408.

Auto-timer 346 can compute an automatic duration for a location sharingsession. This can be used when the sharing session is not associatedwith a static duration (see e.g. the No branch from block 406 below). Insome implementations, the automatic duration can be based on an ETA fora journey associated with the sharing session. In some implementations,the automatic duration can be a sum of the ETA plus a buffer time. Insome implementations, a buffer time is only used for certain modes oftransportation. Additional details on setting an automatic duration aredescribed below in relation to blocks 410-414.

ETA generator 348 can be used by auto-timer 346 to determine an ETA fora journey associated with a current location sharing session. In someimplementations, the ETA can be based on factors such as distance to thedestination, traffic conditions, route characteristics (e.g. terrain,bridges, traffic lights, construction, accidents, toll plazas, etc.),mode of transit (e.g. car, bike, walking, public transit,taxi/ride-share, etc.), weather conditions, etc. In someimplementations, ETA generator 348 can be an interface to an API ofanother system that computes and ETA for the journey. Additional detailson obtaining a journey ETA are described below in relation to block 412.

ETA mapper 350 can be used by auto-timer 346 to determine a buffer timefor the automatically determined share duration. In someimplementations, the buffer time can be based on a mapping of ETA rangesto buffer times, an example of which is shown in table 1. In variousimplementations, a user can specify their own mapping, use a differentdefault mapping, or have multiple mappings to select from for differentlocation sharing sessions. Additional details on obtaining a buffer timeare described below in relation to block 414.

Smart prompter 352 can cause the sharing device to provide prompts to auser when various triggers occur such as: when the share duration is setto be less than an ETA for a journey; when the share duration is set togreater than a threshold amount; or when the share duration ends or isabout to end and the prompt can provide an option to extend the shareduration. Additional details on smart prompts are described below inrelation to block 416.

Those skilled in the art will appreciate that the components illustratedin FIGS. 1-3 described above, and in each of the flow diagrams discussedbelow, may be altered in a variety of ways. For example, the order ofthe logic may be rearranged, substeps may be performed in parallel,illustrated logic may be omitted, other logic may be included, etc. Insome implementations, one or more of the components described above canexecute one or more of the processes described below.

FIG. 4 is a flow diagram illustrating a process 400 used in someimplementations for establishing a configuration for a location sharingsession. In various implementations, process 400 can be performed at asharing device, at a server system, or at a combination of the two.Process 400 begins at block 402 and continues to block 404. At block404, process 400 can receive a location sharing request. For example,this can be received via an “app” or web browser executed on a mobiledevice. In some implementations, the location sharing request can beassociated with options for the sharing session, e.g. options setthrough a UX of the mobile device app such as the share session optionsinterface described below in relation to FIGS. 5A-C or the settings UXdescribed above.

At block 406, process 400 can determine whether the location sharerequest is associated with a setting for a share session to be createdwith a static share duration. For example, the share session can becreated with a static share duration when the location share request isinitiated as a “favorite,” where a share duration in the favorite waspreviously set to static or was not previously specified as eitherautomatic or static. Other settings to indicate a static share durationcan be through a global static setting or where the user specified aparticular share duration when creating the location share request. Ifthe location share request is associated with a static share duration,process 400 continues to block 408, if not, process 400 continues toblock 410.

At block 408, process 400 can set a static share duration for thelocation sharing session. This can be a default static share duration(e.g. 30 minutes), a default value specified by the user for all staticshare durations, or a manually set share duration for the particularshare session to override a default static share duration. In someimplementations, where the share location request is associated with astatic share duration due to the user selecting a favorite that did nothave a set static/automatic selection, the use can be given an option(e.g. causing a prompt to be displayed) allowing the user to request anautomatic share duration. If the user selects to switch to the automaticshare duration, process 400 can switch to block 410 instead of settingthe static share duration at block 408. Process 400 can then continue toblock 416.

At block 410, process 400 can retrieve ETA data for a journey to aparticular destination, associated with the location share request. TheETA data can be computed based on factors such as distance to thedestination, traffic conditions, route characteristics (e.g. terrain,bridges, traffic lights, construction, accidents, toll plazas, etc.),mode of transit (e.g. car, bike, walking, public transit,taxi/ride-share, etc.), weather conditions, etc. Once an ETA is computedor otherwise obtained, process 400 can continue to block 412.

At block 412, process 400 can obtain a mapping of ETAs, or ETA ranges,to corresponding buffer times. In some implementations, the mapping canbe the “multiple of 10” mapping specified above in table 1. In someimplementations, the mapping can be a user specified mapping where auser can override particular ranges or specify a completely new mapping.In some implementations, the location system can specify multiplemappings (either by default or through user customization) which can beselected based on characteristics of the location share request, such asthe destination, time of day, share recipient, etc. For example, a usercan select a buffer mapping of “extended,” where the buffer times aregreater, when the use is not in a hurry, expects to make stops along theway, knows their route tends to have variable travel times, or when heis sharing his location with a trusted recipient and prefers toover-estimate the share duration as opposed to risking the sharingsession ending before reaching his destination. As another example, thelocation system can automatically select a “tight” buffer mapping whenthe share recipient list includes people outside the sending user'strusted favorites, is a shared session that is available to the generalpublic, or where the user has specified the mapping is to be used forcertain share recipients. In some implementations, a buffer may not beadded to the ETA for the share duration, e.g. for particular modes oftransportation. Process 400 can then continue to block 414.

At block 414, process 400 can set an automatic share duration for theshare session. This automatic share duration can be the sum of the ETAobtained at block 410 and the buffer time determined at block 414. Insome implementations, various configurations can be specified for theshare duration such as a configuration that will cause a prompt to beprovided to a user of the sharing device upon a determination that thedestination has been reached. In some implementations, anotherconfiguration that can be specified is to include a prompt or an extrabuffer to be included to account for “meet-up time” after reaching adestination. For example, an extra 5 minute buffer can be applied toshare durations where the mode of transportation is car, to account forwalking time from the car to an actual destination. As another example,a prompt to end the sharing session can be provided upon a determinationthat the destination was reached a threshold amount of time (e.g. 5minutes) ago. Process 400 can then continue to block 416.

At block 416, process 400 can cause one or more “smart prompts” to beprovided via the sharing device or another device. For example, if thesharing device is a car and the destination has been reached, the smartprompt can be provided to the user's phone. In some implementations, asmart prompt can be provided when the share duration is set (e.g.manually) to less than an ETA for the journey of the current sharesession. In some implementations, a smart prompt can be provided whenthe share duration is set to greater than a threshold amount (e.g. fourhours), such a notification can include a suggestion to connect a mobiledevice to a power source or can have an option to decrease the shareduration. In some implementations, a smart prompt can be provided whenthe share duration ends, or is about to end, which can include an optionto extend the share duration by an amount (e.g. five minutes) or untilan event occurs (e.g. the destination is reached). In someimplementations, the location sharing system can provide a limitednumber of such extension notifications, such as five. As discussedabove, while in various implementations, any of the blocks in process400 can be excluded, block 416 is shown in dashed lines to indicate thatsmart prompts are not included in some implementations, e.g. because thesystem is not configured to supply them or where a condition for a smartprompt does not occur. Process 400 can then continue to block 418.

At block 418, process 400 can initiate the location sharing sessionusing the share duration set at block 408 or 414. Process 400 can thencontinue to block 420, where it ends.

In various implementations, the blocks of process 400 can be performedall at a sharing device, all at a server system, or in combination—someat a sharing device some at a server system. Where the blocks of process400 are performed the sharing device, in some implementations, acompanion process can be performed at the server system. For example,the companion process can include one or more of: receiving informationabout the location sharing request or a user account it is associatedwith and determining a static or automatic share duration for thelocation sharing request. The static share duration can be based on,e.g., a default or preferences in an account for the user. The automaticshare duration can be based on an ETA computed by the server system orby another server system (e.g. through an API) and any buffer timecomputed for the share duration. An indication of the determined shareduration can be provided back to the sending device. The server systemcan also provide communications to the sending system to cause thesending system to provide smart prompts to the user, e.g. upon theserver system determining a triggering event, such as the sending systemreaching the destination or the share duration ending. The server systemcan also use the share duration to control whether location data isprovided by the sharing device or whether it is sent to the recipientdevice.

In some implementations, the frequency that location information isprovided to the recipient device can be based on where in the journeythe sharing device is. For example, for the beginning or end of thejourney (e.g. first or last mile or 10% of the journey) the sharingdevice's location can be received or sent with a higher frequency thanin the middle part of the journey. This can facilitate providing moredetail when the recipient is likely to be more interested in thesender's exact location while saving processing/battery/bandwidth whenduring the middle of the journey when the recipient is likely to careless about an exact position.

User Experience (UX) Interfaces

FIGS. 5A-C are conceptual diagrams illustrating an example share sessionoptions interface. FIG. 5A illustrates a UX interface 500 where the userhas not yet specified a destination, so the share duration is set to adefault of 30 minutes. FIG. 5A shows field 502 which allows a user toselect share recipients, field 504 which allows the user to set amessage to include with an invitation to the recipients to participatein the location sharing session, a field 506 which allows the user toset a destination for the journey associated with the location sharingsession, a field 508 showing the currently set share duration and acontrol 510 to adjust the share duration, a control 512 which allows theuser to set a mode of transportation for the journey associated with thelocation sharing session, and a control 514 to save the entries, offields/controls 502-512, as a favorite. In UX interface 500, the userhas only specified a recipient in field 502, the default “car” is set incontrol 512, and the default static duration 30 minutes is set incontrol 510, as indicated in field 508.

FIG. 5B illustrates a UX interface 540 where the user has set adestination “Home” in field 506 from a list of saved destinations. Theuser has also included a message in field 504 for share recipient Laura.Now that a destination has been specified, the location system hascomputed an ETA for that destination of 31 minutes. That ETA is shown oncontrol 510. In this example, auto share durations are enabled as wellas duration buffers using the “multiple of 10” buffer mapping, so theshare duration is set to the ETA (31 minutes) plus the buffer time forthe 20-60 minute ETA range (20 minutes)=51 minutes. The user has theoption to actuate control 510 to override this auto share duration.Because a destination has been set in field 506, a new field 516 is alsoavailable. Field 516 provides the user the option to automatically endthe sharing session when the destination is reached. In someimplementations, this setting can operate to end the sharing session athreshold amount of time after the destination has been reached. In UX540, the control 516 is set to Off, indicating that the share durationis controlled by control 510 as indicated by the time in field 508.

FIG. 5C illustrates a UX interface 570 where the user used control 512to change the mode of transportation from “car” to “bike.” In thisexample, buffers are configured to be removed for “bike” and “walking”modes of transportation as these modes are less susceptible to variationdue to factors such as traffic and finding a parking space. That ETA isshown on control 510. This example does not use a buffer, so the shareduration is set to the ETA (2 hr 7 minutes), as shown in field 508. Hereagain, the user has the option to actuate control 510 to override thisauto share duration.

FIG. 6 is a conceptual diagram illustrating an example UX interface 600for an ongoing location sharing session. UX interface 600 can beprovided at a sharing device or a recipient device. UX interface 600includes an indicator 602 showing the location, direction, mode oftransit, expected time to arrival, and user name in relation to thesharing device. UX interface 600 also has a route 604 showing anexpected route to destination 606. UX interface 600 includes a side barwith indication(s) 608 of members (e.g. recipients) of the sharesession. Additionally, UX interface 600 has an indication 610 showingthe remaining time in the share duration for the current locationsharing session.

CONCLUSION

Unless the context clearly requires otherwise, throughout thedescription and the claims, the words “comprise,” “comprising,” and thelike are to be construed in an inclusive sense, as opposed to anexclusive or exhaustive sense; that is to say, in the sense of“including, but not limited to.” As used herein, the terms “connected,”“coupled,” or any variant thereof means any connection or coupling,either direct or indirect, between two or more elements; the coupling orconnection between the elements can be physical, logical, or acombination thereof. Additionally, the words “herein,” “above,” “below,”and words of similar import, when used in this application, refer tothis application as a whole and not to any particular portions of thisapplication. Where the context permits, words in the above DetailedDescription using the singular or plural number may also include theplural or singular number respectively. The word “or” in reference to alist of two or more items covers all of the following interpretations ofthe word: any of the items in the list, all of the items in the list,and any combination of the items in the list.

The above Detailed Description of examples of the described technologyis not intended to be exhaustive or to limit the described technology tothe precise form disclosed above. While specific examples for thedescribed technology are described above for illustrative purposes,various equivalent modifications are possible within the scope of theinvention, as those skilled in the relevant art will recognize. Forexample, while processes or blocks are presented in a given order,alternative implementations may perform routines having steps, or employsystems having blocks, in a different order, and some processes orblocks may be deleted, moved, added, subdivided, combined, and/ormodified to provide alternative or subcombinations. Each of theseprocesses or blocks may be implemented in a variety of different ways.Also, while processes or blocks are at times shown as being performed inseries, these processes or blocks may instead be performed orimplemented in parallel, or may be performed at different times. Furtherany specific numbers noted herein are only examples: alternativeimplementations may employ differing values or ranges.

The teachings of the described technology provided herein can be appliedto other systems, not necessarily the system described above. Theelements and acts of the various examples described above can becombined to provide further implementations of the described technology.Some alternative implementations of the described technology may includenot only additional elements to those implementations noted above, butalso may include fewer elements.

These and other changes can be made to the described technology in lightof the above Detailed Description. While the above description describescertain examples of the described technology, and describes the bestmode contemplated, no matter how detailed the above appears in text, thedescribed technology can be practiced in many ways. Details of thesystem may vary considerably in its specific implementation, while stillbeing encompassed by the described technology. As noted above,particular terminology used when describing certain features or aspectsof the described technology should not be taken to imply that theterminology is being redefined herein to be restricted to any specificcharacteristics, features, or aspects of the described technology withwhich that terminology is associated. In general, the terms used in thefollowing claims should not be construed to limit the describedtechnology to the specific examples disclosed in the specification,unless the above Detailed Description section explicitly defines suchterms. Accordingly, the actual scope of the described technologyencompasses not only the disclosed examples, but also all equivalentways of practicing or implementing the described technology under theclaims.

Several implementations of the disclosed technology are described abovein reference to the figures. The computing devices on which thedescribed technology may be implemented can include one or more centralprocessing units, memory, input devices (e.g., keyboard and pointingdevices), output devices (e.g., display devices), storage devices (e.g.,disk drives), and network devices (e.g., network interfaces). The memoryand storage devices are computer-readable storage media that can storeinstructions that implement at least portions of the describedtechnology. In addition, the data structures and message structures canbe stored or transmitted via a data transmission medium, such as asignal on a communications link. Various communications links can beused, such as the Internet, a local area network, a wide area network,or a point-to-point dial-up connection. Thus, computer-readable mediacan comprise computer-readable storage media (e.g., “non-transitory”media) and computer-readable transmission media.

Reference in this specification to “implementations” (e.g. “someimplementations,” “various implementations,” “one implementation,” “animplementation,” etc.) means that a particular feature, structure, orcharacteristic described in connection with the implementation isincluded in at least one implementation of the disclosure. Theappearances of these phrases in various places in the specification arenot necessarily all referring to the same implementation, nor areseparate or alternative implementations mutually exclusive of otherimplementations. Moreover, various features are described which may beexhibited by some implementations and not by others. Similarly, variousrequirements are described which may be requirements for someimplementations but not for other implementations.

As used herein, being above a threshold means that a value for an itemunder comparison is above a specified other value, that an item undercomparison is among a certain specified number of items with the largestvalue, or that an item under comparison has a value within a specifiedtop percentage value. As used herein, being below a threshold means thata value for an item under comparison is below a specified other value,that an item under comparison is among a certain specified number ofitems with the smallest value, or that an item under comparison has avalue within a specified bottom percentage value. As used herein, beingwithin a threshold means that a value for an item under comparison isbetween two specified other values, that an item under comparison isamong a middle specified number of items, or that an item undercomparison has a value within a middle specified percentage range.Relative terms, such as high or unimportant, when not otherwise defined,can be understood as assigning a value and determining how that valuecompares to an established threshold. For example, the phrase “selectinga fast connection” can be understood to mean selecting a connection thathas a value assigned corresponding to its connection speed that is abovea threshold.

As used herein, the word “or” refers to any possible permutation of aset of items. For example, the phrase “A, B, or C” refers to at leastone of A, B, C, or any combination thereof, such as any of: A; B; C; Aand B; A and C; B and C; A, B, and C; or multiple of any item such as Aand A; B, B, and C; A, A, B, C, and C; etc.

I/We claim:
 1. At least one computer-readable storage medium, carryinginstructions, which when executed by at least one data processor,executes operations for a location sharing session, the operationscomprising: during the location sharing session, receiving data relatedto a distance to a destination or a travel time to the destination,wherein a wireless mobile device initiated the location sharing sessionbased on user input; determining, relative to the wireless mobiledevice, a current distance to the destination or a current travel timeto the destination; and, providing a location sharing message, whereinthe message is at least one of: a warning that a duration for sharinglocation data via the location sharing session is set to end before anestimated time of arrival, a warning that the wireless mobile devicewill need to be charged before the end of the duration for sharinglocation data, a prompt to a user that the duration for sharing locationdata has been set longer or shorter than a threshold, a prompt to endthe location sharing session upon a determination that the destinationwas reached a threshold amount of time ago, or an option to share travelvelocity of the wireless mobile device.
 2. The computer-readable storagemedium of claim 1, wherein the message is a prompt to a user that theduration for sharing location data has been set longer than a threshold,and wherein the threshold is 4 hours.
 3. The computer-readable storagemedium of claim 1, wherein the message is a prompt to a user that theduration for sharing location data has been set shorter than athreshold, and providing an option for an extra time buffer to beincluded to account for meet-up time after reaching the destination. 4.The computer-readable storage medium of claim 1, wherein the message isa warning to a user that the duration for sharing location data has beenset shorter than a threshold, and providing an option for an extra timebuffer to be included to account for meet-up time after reaching thedestination, wherein the extra time buffer is approximately 5 minuteswhen a mode of transportation is a car, to thereby account for walkingtime from the car to the destination.
 5. The computer-readable storagemedium of claim 1, wherein the message is a warning that the durationfor sharing location data for the location sharing session is set to endbefore an estimated time of arrival, and providing an option to extendthe location sharing session for a particular amount of time or untilthe destination is reached.
 6. The computer-readable storage medium ofclaim 1, wherein the message is a prompt to end the location sharingsession upon a determination that the destination was reached athreshold amount of time ago, and wherein the threshold amount of timeis approximately 5 minutes.
 7. The computer-readable storage medium ofclaim 1, wherein: the threshold comprises a threshold distance or traveltime to the destination and the location sharing session includes thecurrent distance or the current travel time to the destination, thethreshold comprises a threshold time since reaching the destination andthe location sharing session includes a time since reaching thedestination, or the threshold comprises a threshold rate of travel andthe location sharing session includes a current rate of travel.
 8. Thecomputer-readable storage medium of claim 1, wherein at least one of anestimated time of arrival, the current distance to the destination, orthe current travel time to the destination is based on one or more of: aselected mode of transportation, an identified current weathercondition, a determined speed characteristic of the user based onpreviously observed diving speeds of the user, or any combinationthereof.
 9. At least one computer-readable storage medium storinginstructions that, when executed by at least one computing system, causethe computing system to perform operations for a location sharingsession related to sharing, with a receiving computing device, alocation of a wireless mobile device, the operations comprising: duringthe location sharing session, receiving data related to a distance to adestination or a travel time to the destination, wherein the wirelessmobile device initiated the location sharing session based on userinput; determining, relative to the wireless mobile device, a currentdistance to the destination or a current travel time to the destination;comparing, relative to the wireless mobile device, the distance to thedestination to the current distance to the destination, or the traveltime to the destination to the current travel time to the destination;and, changing a frequency with which location data is captured orreceived from the wireless mobile device, to thereby reduce bandwidthusage, power consumption, or both bandwidth usage and power consumption.10. The computer-readable storage medium of claim 9, further comprisingdetermining a remaining device battery life before changing thefrequency.
 11. The computer-readable storage medium of claim 9, furthercomprising providing a message with a prompt to charge the wirelessmobile device.
 12. The computer-readable storage medium of claim 9,wherein changing the frequency includes: a) a first frequency wherebylocation data is captured from the wireless mobile device in a firsttime between 1) when the current distance or current travel time to thedestination is at a threshold distance or travel time from thedestination, and 2) when the wireless mobile device is at thedestination, and b) a second frequency that location data is capturedfrom the wireless mobile device for at least part of a second time thatis before the first time.
 13. At least one computer-readable storagemedium storing instructions that, when executed by at least onecomputing system, cause the computing system to perform operationsassociated with a location sharing session that is for sharing locationdata of a wireless mobile device with a receiving computing device, theoperations comprising: during the location sharing session, receivingdata related to a distance to a destination or a travel time to thedestination, wherein the wireless mobile device initiated the locationsharing session based on user input; determining, relative to thewireless mobile device, a current distance to the destination or acurrent travel time to the destination; and, automatically ending thelocation sharing session based on: a threshold amount of time afterreaching the destination, when the user is a threshold distance awayfrom the destination, or when the user achieves a threshold speed. 14.The computer-readable storage medium of claim 13 wherein automaticallyending the location sharing session is based on when the user achieves athreshold speed, to thereby indicate that the user is no longer onsurface streets and location sharing is no longer needed.
 15. Thecomputer-readable storage medium of claim 13 wherein automaticallyending the location sharing session is based on when the user is athreshold distance away from the destination, to thereby providesecurity to the user so a recipient of the shared location data cannotsee where the wireless mobile device stopped.
 16. At least onecomputer-readable storage medium storing instructions that, whenexecuted by at least one computing system, cause the computing system toperform operations for performing actions for a location sharing sessionthat is for sharing location data of a wireless mobile device with areceiving computing device, the operations comprising: during thelocation sharing session, receiving data related to a distance to adestination or a travel time to the destination, wherein the wirelessmobile device initiated the location sharing session based on userinput, wherein the user selected on the wireless mobile device an optionfor sharing location data for a static duration, and wherein the staticduration is associated with a preselected favorite recipient, or isassociated with a particular destination or starting location;determining, relative to the wireless mobile device, a current distanceto the destination or a current travel time to the destination;automatically ending the location sharing session after the staticduration.
 17. The computer-readable storage medium of claim 16 whereinthe static duration is associated with a preselected favorite recipientselected from a contact stored on the wireless mobile device.
 18. Thecomputer-readable storage medium of claim 16 wherein the static durationis associated with a preselected favorite recipient selected from abutton provided by a graphical user interface screen displayed on thewireless mobile device.